# Инструкция по запуску

## Развертываем инфраструктуру

Запускаем приложение!

```bash
docker compose up -d
```
Генерация ключа для протокола Диффи-Хеллмана может занять некоторое время, и до её окончания контейнер с веб-сервером не запустится!

## Подготовливаем окружения на хосте

Так как сертификат веб-сервера у нас самоподписанный, придется немного извратиться и записать наш УЦ в корневые доверенные, параллельно рассказав /etc/hosts про доменное имя. Это в принципе все, чем занимается нижепредставленный скрипт. (А ещё проверяет, запущен ли он на Debian-подобном дистрибутиве... Ну просто на всякий случай!)

```bash
chmod +x register_ca_and_host.sh
sudo ./register_ca_and_host.sh
```

Стоит оговориться, я исходил из предположения, что инфраструктура будет развернута непосредсвенно на хосте, а не внутри ВМ. Если запрашивать защищенное подключение у 192.168.Х.Х, страничка конечно откроется, но попытается предупредить, что в сертификате подобный адрес не упоминается.

### Пару слов про Firefox

Конкретно на системе Debian браузер Firefox не обновляет базу доверенных УЦ автоматически после прогона скрипта. У них, как оказалось, в принципе своя база, и добавлять сертификат туда придется ручками!

#### Шаг 1

![screenshot](docs/images/screenshot1.png)

#### Шаг 2

![screenshot](docs/images/screenshot2.png)

#### Шаг 3

![screenshot](docs/images/screenshot3.png)

#### Шаг 4

![screenshot](docs/images/screenshot4.png)

#### Шаг 5

![screenshot](docs/images/screenshot5.png)

#### Шаг 6

![screenshot](docs/images/screenshot6.png)

## Проверяем!

Веб-сервер будет доступен по протоколам HTTP/HTTPS на адресах:

```
flask.xsoft.test
localhost
127.0.0.1
```

На ваш выбор!)

![screenshot](test.jpeg)

## Завершение работы

Перед повторным запуском желательно почистить примонтированную директорию с сертификатами и, учитывая специфику иерархии запуска контейнеров, положить инфраструктуру.

```bash
docker compose down -v
sudo rm -rf containers/cert-manager/certs/*
```

Ну, как-то так! 